CodeRabbitとGitHub連携時に必要な権限について調べてみた

CodeRabbitとGitHub連携時に必要な権限について調べてみた

Clock Icon2024.10.31

はじめに

CodeRabbitはコードレビューのAI補助ツールです🐇

https://www.coderabbit.ai/

本記事では導入に必要なGitHubの権限について解説します。CodeRabbitを検証、導入する際に参考になればと思います。

前提

CodeRabbitののWebアプリのへのログイン(連携)方法は現状5つあります。今回はSaaSのGitHubについて調査します。

種類 サービス
SaaS GitHub
SaaS GitLab
SaaS Azure DevOps
Self-Hosted GitHub
Self-Hosted GitLab

本記事は2024年の11月1日の調査内容となります。

結論

CodeRabbitとGitHub連携には、CodeRabbit社の以下2つのGitHubのアプリ両方の連携が必要です。

  • OAuth apps
  • GitHub Apps

またCodeRabbitのUI上からサブスクリプションを契約する際には、OrganizationのOwner権限が必要です。
CleanShot 2024-10-31 at 16.13.50@2x

GitHubのMarketplace経由での課金も可能ですが、Owner権限がないと一覧に表示されないため、契約はできません。

CleanShot 2024-11-01 at 07.48.40@2x

OAuth appsの連携

Loginボタンを押下すると連携できます。

委譲する権限は以下の通りで、アカウントの基本的な所属情報のみを取得する形で軽い権限と言えます。

  • user:email: ユーザーのメール アドレスへの読み取りアクセスを許可
  • read:org: 組織のメンバーシップ、組織のプロジェクト、チームの参加状況の読み取りアクセスを許可

GitHub Appsの連携

こちらは実際にコードを解析するアプリと考えられます。コードにアクセスする必要があるため、権限は強めで、リポジトリのコードやコミットissueやPRに対して読み取りと書き込みの権限が付与されています。

  • Read access to checks, discussions, and metadata
  • Read and write access to code, commit statuses, issues, and pull requests

また本GitHub AppsはGitHub Marketplaceの「Publisher domain and email verified」バッジを取得しており、信頼性の基準になるかと思います。

その他

GitHubのOAuth appsとGitHub Appsの違いは以前執筆した記事をご参照ください。

https://shuntaka.dev/shuntaka/articles/01ezm5k2rt1jm6zbsewm33r0xw

調査

ログイン

まずログイン画面に行きます。複数のログイン手段が選択でき、今回はSaaSのGitHubを選択します。
CleanShot 2024-10-31 at 08.06.24@2x

認可画面に遷移します。
CleanShot 2024-10-31 at 08.14.03@2x

コールバックURLはhttps://github.com/login/oauth/authorize?client_id=45872a44c0e55c462eed&scope=user%3Aemail+read%3Aorg&skip_account_picker=true&state=githubです。

このURLからOAuth Appが要求するscopeは以下の通りです。GitHub公式 | OAuth アプリのスコープを参考に、以下の権限を委譲することが分かります。

スコープ 権限の詳細
user:email ユーザーのメール アドレスへの読み取りアクセスを許可します。
read:org 組織のメンバーシップ、組織のプロジェクト、チームのメンバーシップへの読み取り専用アクセス。

ログインすると、Owner/Organizationの選択画面になります。Ownerしか許可していないのでこの表示は想定通りです。

CleanShot 2024-10-31 at 08.32.04@2x

CleanShot 2024-10-31 at 08.32.16@2x

リポジトリの追加

リポジトリを追加します
CleanShot 2024-10-31 at 08.57.31@2x

Owner/Organizationが複数ある場合、選択します。

CleanShot 2024-10-31 at 08.59.41 2@2x

インストール対象のリポジトリを選択します。
CleanShot 2024-10-31 at 10.08.08 2@2x

権限はこの画像の通りです。
CleanShot 2024-10-31 at 10.30.38@2x

連携すると、サインアップ情報の入力が求められます。
CleanShot 2024-10-31 at 10.15.09@2x

最後に連携したリポジトリが見えていれば、連携完了です。
CleanShot 2024-10-31 at 10.16.47@2x

さいごに

GitHub Enterpriseでも基本的に同じ流れになると思います。参考 過去GitHub Enterpriseを運用されていたお客さんの中で、導入に関して権限の調査依頼を受けた経験があったため参考になるかと思い書きました。実際に使ったレビューは別の記事で書こうと思います。

余談: GitHub Copilot code reviewがローンチしたら、権限周りの話がないので嬉しいですね!

https://github.blog/changelog/2024-10-29-github-copilot-code-review-in-github-com-public-preview/

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.